

in vec4 oldPos;
in vec4 currentPos;

out vec4 motionVector;

void main(){
    
    // pos.xy / pos.w 里， 各个元素的取值范围都是[-1,1]
    // 但是采样的坐标取值范围是[0.0,1.0]
    // 所以我们需要先把 pos.xy 映射到 [0.0,1.0] 再计算motionVector
    // 下面的公式省略了 注释掉的项，因为会被减掉
    vec2 distance = ((currentPos.xy / currentPos.w /* + 1.0 */) - (oldPos.xy / oldPos.w /* + 1.0 */)) * 0.5;

    // distance现在的取值范围是[-1.0,1.0]
    // 在opengl里，输出的值限定为[0.0,1.0]
    // 所以我们需要把distance的取值范围转为[0.0,1.0]
    // 然后我们在采样motionVector贴图时，需要重新映射回去
    distance = (distance + 1.0) * 0.5;

    motionVector = vec4(distance,1.0,1.0);

}